Skip to content

feat(desktop): add NFC-V (ISO 15693) support for PC/SC readers#236

Merged
codebutler merged 4 commits intomasterfrom
feat/nfcv-desktop-web
Feb 17, 2026
Merged

feat(desktop): add NFC-V (ISO 15693) support for PC/SC readers#236
codebutler merged 4 commits intomasterfrom
feat/nfcv-desktop-web

Conversation

@codebutler
Copy link
Owner

Summary

  • Detect NFC-V (ISO 15693) cards from PC/SC ATR historical bytes (ICODE SLI SS=0x07, Tag-it HFI SS=0x0C)
  • Add PCSCVicinityTechnology implementing VicinityTechnology over PC/SC transparent pseudo-APDUs (FF 00 00 00)
  • Wire CardType.Vicinity into PcscReaderBackend.readCard() to complete the desktop PC/SC reading path

Works with PC/SC readers that have ISO 15693 firmware support (ACR1252U, Omnikey 5022/5427, Identiv uTrust 3700F, SpringCard H663). Readers without ISO 15693 support (e.g., ACR122U with internal PN532) will simply never present NFC-V cards — no fallback needed.

PN53x-based backends (Desktop USB PN53xReaderBackend, Web WebUSB WebCardScanner) cannot support NFC-V due to hardware limitations — the PN533 chip only supports ISO 14443-A/B and FeliCa modulations. No code changes needed for those paths.

Test plan

  • PCSCCardInfoTest: 3 tests — NFC-V ICODE SLI ATR, Tag-it HFI ATR, Classic 1K regression
  • PCSCVicinityTechnologyTest: 2 tests — UID passthrough, connect/close lifecycle
  • CI: ./gradlew allTests passes (card + transit JVM tests verified locally)
  • Manual: present an ISO 15693 tag to a PC/SC reader with NFC-V firmware support

🤖 Generated with Claude Code

Claude and others added 4 commits February 16, 2026 17:11
Add SS byte constants for ICODE SLI (0x07) and Tag-it HFI (0x0C) to
PCSCCardInfo, mapping them to CardType.Vicinity. Includes unit tests
for both NFC-V ATR patterns plus a regression test for Classic 1K.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implements VicinityTechnology using PC/SC transparent pseudo-APDUs
(FF 00 00 00) to send raw ISO 15693 commands through the reader's
contactless interface. Also adds java.smartcardio module to the test
compilation classpath and includes FakePCSCChannel test helper.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add CardType.Vicinity case to PcscReaderBackend.readCard() that creates
a PCSCVicinityTechnology and delegates to VicinityCardReader.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@codebutler codebutler merged commit 26ae45f into master Feb 17, 2026
6 checks passed
@codebutler codebutler deleted the feat/nfcv-desktop-web branch February 17, 2026 01:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Comments